package com.mall.module.user.mapper;

import com.mall.module.user.domain.entity.UserCredential;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

@Mapper
public interface UserCredentialMapper {

    /**
     * 通过凭证ID查询用户凭证
     *
     * @param credentialId 凭证ID
     * @return 用户凭证
     */
    UserCredential selectById(@Param("credentialId") Long credentialId);

    /**
     * 通过用户ID查询用户凭证列表
     *
     * @param userId 用户ID
     * @return 用户凭证列表
     */
    List<UserCredential> selectByUserId(@Param("userId") Long userId);

    /**
     * 通过认证类型和唯一标识查询用户凭证
     *
     * @param identityType 认证类型
     * @param identifier 唯一标识
     * @return 用户凭证
     */
    UserCredential selectByIdentity(@Param("identityType") String identityType, @Param("identifier") String identifier);

    /**
     * 插入用户凭证
     *
     * @param userCredential 用户凭证
     * @return 影响行数
     */
    int insert(UserCredential userCredential);

    /**
     * 更新用户凭证
     *
     * @param userCredential 用户凭证
     * @return 影响行数
     */
    int update(UserCredential userCredential);

    /**
     * 删除用户凭证
     *
     * @param credentialId 凭证ID
     * @return 影响行数
     */
    int deleteById(@Param("credentialId") Long credentialId);

    /**
     * 通过用户ID删除用户凭证
     *
     * @param userId 用户ID
     * @return 影响行数
     */
    int deleteByUserId(@Param("userId") Long userId);
}